import axios from 'axios'

const api  = axios.create({
  baseURL: "",
  timeout: 500
})


// 请求的总次数
api.defaults.retry = 4

// 请求间隙
api.defaults.retryDelay = 1000


api.interceptors.request.use(config => {

}, error => {

})

// 响应拦截
api.interceptors.response.use(res => {
  return res
}, error => {

  let config = error.config
  console.log("ss", error.request)
  // 如果没有配置文件，就直接回调reject
  if(!config || !config.retry) return Promise.reject(error)

  // 统计请求次数
  config.__retryCount = config.__retryCount || 0

  // 比较请求次数和请求总数，如果超出请求总数就不在请求
  if (config.__retryCount >= config.retry) {
    return Promise.reject(error)
  }

  config.__retryCount +=1



  // 定义回调Prmoise回调  retryDelay 是请求间隔
  var backoff =  new Promise(function (resolve) {
    setTimeout(function () {
      resolve()
    }, config.retryDelay || 1)
  })

  // 重新发起请求
  return backoff.then(function () {
    return api(config)
  })
})





export default api
